ヘッダーをスキップ
Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド
リリース6.0
B25770-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

IN条件

IN条件は、指定した値のリストまたは表の副問合せと式を比較します。式がリストの値のいずれかまたは副問合せによって返された値と等しい場合、IN条件はTRUEと評価されます。式がリストの値のいずれにも等しくないか、または副問合せによって返された値と等しくない場合、NOT INはTRUEと評価されます。

SQL構文

Expression [NOT] IN (ValueList|Subquery)

パラメータ

Expression
式の構文については、「式」を参照してください。IN条件には、数値式も数値以外の式も使用できますが、ValueListの値は式と互換性がある必要があります。
ValueList

式の値と比較する値を指定します。ValueListの構文は、次のとおりです。

{ Constant|
  { ? | :DynamicParameter}
} [,...]
  • Constant: 特定の値を指定します。詳細は、「定数」を参照してください。
  • ?,:DynamicParameter: 準備されたSQL文の動的パラメータのプレースホルダ。動的パラメータの値は、文の実行時に設定されます。
  • 空のリスト。SQL生成ツールによって生成される場合がある。
Subquery

副問合せの構文については、「副問合せ」を参照してください。

説明
例12.7

重量が12、16、17の部品の番号を検索します。

SELECT Parts.PartNumber FROM Parts  
WHERE Parts.Weight IN (12, 16, 17); 
例12.8

シリアル番号が'1123-P-01'、
'1733-AD-01'、:SerialNumberまたは:SerialIndである部品の部品番号を検索します。:SerialNumberと:SerialIndは動的パラメータで、その値は実行時に指定されます。

SELECT PartNumber FROM Purchasing.Parts  
WHERE SerialNumber  
IN ('1123-P-01', '1733-AD-01',:SerialNumber, :SerialInd); 
例12.9

次に、1件以上の未発送の発注がある顧客を検索する副問合せの例を示します。

SELECT customers.name FROM customers
WHERE customers.id IN
(SELECT orders.custid FROM orders
WHERE orders.status = 'un-shipped'); 
例12.10

副問合せのあるNOT INの例です。

SELECT * FROM customers  
WHERE cid NOT IN 
(SELECT cust_id FROM returns) 
AND cid > 5000; 
SELECT * FROM customers  
WHERE cid NOT IN 
(SELECT cust_id FROM returns) 
AND cid NOT IN 
(SELECT cust_id FROM complaints); 
SELECT COUNT(*) From customers  
WHERE cid NOT IN 
(SELECT cust_id FROM returns) 
AND cid NOT IN 
(SELECT cust_id FROM complaints); 
例12.11

次に、INを使用した副問合せを指定する集計問合せを使用して、exclBookListの本の最も高い価格を検索する例を示します。

SELECT MAX(price) FROM books WHERE id IN (SELECT id FROM
exclBookList); 
例12.12

INまたはNOT IN条件で空の選択リストを問い合せる例を示します。

SELECT * FROM t1 WHERE x1 IN ();  
SELECT * FROM t1 WHERE NOT x1 IN (); 
例12.13

exclBookList以外の本または価格が$20より高いすべての本を選択する例を示します。

SELECT * FROM books WHERE id NOT IN (SELECT id FROM exclBookList)
OR books.price>20;